using SharpGraphT.Graph.Specifics;

namespace SharpGraphT.Graph;

public interface IGraphSpecificsStrategy<TV, TE> where TE : class, new() {
    Func<IGraphType, IIntrusiveEdgesSpecifics<TV, TE>>
        GetIntrusiveEdgesSpecificsFactory();

    Func<IGraph<TV, TE>, IGraphType, ISpecifics<TV, TE>> GetSpecificsFactory();

    IEdgeSetFactory<TV, TE> GetEdgeSetFactory() =>
        new ArrayUnenforcedSetEdgeSetFactory<TV, TE>();
}